/**************************************************************************************************
**                                                                                               **
**  文件名称:  osl_msg_reg.c                                                                     **
**  版权所有:  CopyRight @ Xiamen Yaxon NetWork CO.LTD. 2017                                     **
**  文件描述:  系统消息注册模块                                                                  **
**  ===========================================================================================  **
**  创建信息:  | 2017-3-23 | LEON | 创建本模块                                                   **
**  ===========================================================================================  **
**  修改信息:  单击此处添加....                                                                  **
**************************************************************************************************/
#include "osl_include.h"
#include "osl_msg_reg.h"

/*************************************************************************************************/
/*                           声明消息处理函数                                                    */
/*************************************************************************************************/
#ifdef SYSMSG_REG
#undef SYSMSG_REG
#endif

#define SYSMSG_REG(_MSG_ID_, _PROC_)             void _PROC_(INT16U msgid, INT32U lpara, INT32U hpara);

#include "osl_msg_reg.def"

/*************************************************************************************************/
/*                           定义消息注册表                                                      */
/*************************************************************************************************/
#ifdef SYSMSG_REG
#undef SYSMSG_REG
#endif

#define SYSMSG_REG(_MSG_ID_, _PROC_)             {_MSG_ID_, _PROC_},

static const SYSMSG_TBL_T s_sysmsg_tbl[] = {
    #include "osl_msg_reg.def"
    {0, 0}
};

/**************************************************************************************************
**  函数名称:  MSG_Hdl_JustForTest
**  功能描述:  消息处理机制测试
**  输入参数:  无
**  输出参数:  无
**  返回参数:  无
**************************************************************************************************/
void MSG_Hdl_JustForTest(INT16U msgid, INT32U lpara, INT32U hpara)
{
    // 这里定义本函数，为了防止def注册表为空，导致程序编译出现警告
}

/**************************************************************************************************
**  函数名称:  OSL_GetSysMsgMaxID
**  功能描述:  获取注册在案的消息个数总数
**  输入参数:  无
**  输出参数:  无
**  返回参数:  无
**************************************************************************************************/
INT8U OSL_GetSysMsgMaxID(void)
{
    return SYSMSG_ID_MAX;
}

/**************************************************************************************************
**  函数名称:  OSL_GetSysMsgHdl
**  功能描述:  根据消息ID查找其对应的结构块
**  输入参数:  无
**  输出参数:  无
**  返回参数:  无
**************************************************************************************************/
MSG_HDL_T OSL_GetSysMsgHdl(SYSMSG_ID_E msgid)
{
    INT16U i;

    for (i = 0; i < SYSMSG_ID_MAX; i++) {
        
        if (s_sysmsg_tbl[i].msgid == msgid) {
            return s_sysmsg_tbl[i].proc;
        }
    }
    
    return NULL;
}

